package com.ea.common.result;

import lombok.Getter;

/**
 * 错误码枚举类
 * 00000：一切正常
 * 1类：用户端错误
 * 2类：系统执行出错
 * 3类：调用第三方服务出错
 */
@Getter
public enum ErrorCode {
    NO_ERROR(200, "一切正常"),

    USER_ERROR(10001, "用户端错误"),
    USER_REGISTER_ERROR(10100, "用户注册错误"),
    USER_REGISTER_ERROR_PASSWORD_NOT_EQUALS(10101, "两次输入的密码不一致"),
    USER_REGISTER_ERROR_TIME_OUT(10102, "注册超时"),

    USER_LOGIN_ERROR(10200, "用户登录错误"),
    USER_LOGIN_ERROR_ACCOUNT_PASSWORD_NOT_MATCH(10201, "账号或密码不正确"),
    USER_LOGIN_ERROR_NO_LOGIN(10202, "若要使用此服务，请先登录"),
    USER_LOGIN_ERROR_LOGIN_EXPIRE(10202, "登录信息已过期，请重新登录"),
    USER_LOGIN_ERROR_LOGIN_INVALID(10203, "用户登录账号格式不正确"),
    USER_LOGIN_ERROR_TIME_OUT(10204, "登录超时"),
    USER_LOGIN_ERROR_USER_NOT_EXISTS(10205, "登录信息已过期，请重新登陆"),
    USER_LOGIN_ERROR_PASSWORD_ERROR(10206, "输入的密码不正确"),
    USER_LOGIN_ERROR_ACCOUNT_BLOCKED(10207, "账号已被禁用，请联系管理员处理"),

    USER_PERMISSION_ERROR(10300, "访问权限异常"),
    USER_FUNCTION_PERMISSION_ERROR_ONLY_SUPER_ADMIN(10301, "不能将超级管理员特有的权限分配给普通管理员"),
    USER_FUNCTION_PERMISSION_ERROR(10310, "功能权限不足，请联系管理员处理"),
    USER_COMPANY_PERMISSION_ERROR(10320, "单位权限不足，请联系管理员处理"),
    USER_COMPANY_PERMISSION_EMPTY_ERROR(10321, "单位权限为空，请联系管理员进行分配"),
    USER_DEPT_PERMISSION_ERROR(10330, "部门权限不足，请联系管理员处理"),
    USER_DEPT_PERMISSION_EMPTY_ERROR(10331, "部门权限为空，请联系管理员进行分配"),
    USER_PERMISSION_ERROR_ONLY_SUPER_ADMIN(10340, "仅系统超级管理员可操作"),
    USER_PERMISSION_ERROR_ONLY_COMPANY_SUPER_ADMIN(10341, "仅单位超级管理员可操作"),

    USER_PERMISSION_ERROR_ONLY_SUPER_ADMIN_COMPANY_SUPER_AMIN_COMPANY_ADMIN(10332, "仅系统超级管理员、单位超级管理员、单位管理员可操作"),
    USER_PERMISSION_ERROR_ONLY_COMPANY_SUPER_AMIN_COMPANY_ADMIN_DEPT_SUPER_ADMIN(10333, "仅单位超级管理员、单位管理员、部门超级管理员可操作"),
    USER_PERMISSION_ERROR_ONLY_SUPER_ADMIN_COMPANY_SUPER_AMIN_COMPANY_ADMIN_DEPT_SUPER_ADMIN(10333, "仅系统超级管理员、单位超级管理员、单位管理员、部门超级管理员可操作"),


    USER_PARAM_ERROR(10410, "请求的参数有误"),
    USER_PARAM_ERROR_NULL_PARAM(10420, "请求必填参数为空"),
    USER_PARAM_ERROR_EITHER_NEW_CONTACT_OR_EXIST_CONTACT(10421, "指定的单位联系人既不是现有联系人，也不满足新建联系人的条件"),
    USER_PARAM_ERROR_ID_ERROR(10430, "请求的ID错误"),
    USER_PARAM_ERROR_NOT_SUPER_ADMIN(10440, "请求的管理员账号有误"),
    USER_PARAM_ERROR_NOT_DEPT_SUPER_ADMIN(10441, "只能将部门超级管理员设置为联系人"),
    USER_PARAM_ERROR_NOT_COMPANY_SUPER_ADMIN(10442, "只能将单位超级管理员设置为联系人"),
    USER_PARAM_ERROR_DEPT_NOT_BELONG_COMPANY(10443, "请求的部门不属于请求的单位"),
    USER_PARAM_ERROR_POSITION_NOT_BELONG_COMPANY(10444, "请求的职位不属于请求的单位"),
    USER_PARAM_ERROR_ACCOUNT_BLOCKED(10445, "请求的账号已被禁用，请联系管理员处理"),
    USER_PARAM_ERROR_AT_LEAST_COMPANY_PERMISSION(10450, "请求的账号至少要包含一个单位权限"),
    USER_PARAM_ERROR_IS_COMPANY_CONTACT(10451, "请求的账号是单位联系人，至少要包含联系单位的单位权限"),
    USER_PARAM_ERROR_IS_DEPT_CONTACT(10452, "请求的账号是部门联系人，至少要包含联系部门的部门权限"),
    USER_PARAM_ERROR_ILLEGAL_VIBRA_RESULT(10460, "不合法的Vibra分析结果"),
    USER_PARAM_ERROR_ILLEGAL_SHENSHI_RESULT(10461, "不合法的Shenshi分析结果"),
    USER_PARAM_ERROR_FILE_NOT_SUPPORT(10470, "不支持的文件类型"),
    USER_PARAM_ERROR_FILE_TOO_LARGE(10471, "请使用分片上传接口"),
    USER_PARAM_ERROR_FILE_TOO_SMALL(10472, "请使用文件上传接口"),
    USER_PARAM_ERROR_WARNING_TYPE_ERROR(10480, "请求的预警类型有误"),
    USER_PARAM_ERROR_SUP_COMPANY_ERROR(10481, "不能将本单位设置为本单位的上级单位"),
    USER_PARAM_ERROR_SUP_DEPT_ERROR(10482, "不能将本部门设置为本部门的上级部门"),
    USER_PARAM_ERROR_CUSTOM_INDEX_NAME_ERROR(10483, "不能将系统保留词作为自定义指标名称"),
    USER_PARAM_ERROR_TOKEN_INVALID(10484, "访问令牌无效或已过期"),

    SYSTEM_ERROR(20001, "系统执行出错"),
    SYSTEM_ERROR_FILE_UPLOAD_ERROR(20101, "文件上传出错"),
    SYSTEM_ERROR_FILE_DOWNLOAD_ERROR(20102, "文件下载出错"),
    SYSTEM_ERROR_FILE_MERGE_ERROR(20103, "文件合成出错"),
    SYSTEM_ERROR_FILE_EXPORT_ERROR(20104, "文件导出出错"),
    SYSTEM_ERROR_FILE_DELETE_ERROR(20105, "文件删除出错"),
    SYSTEM_ERROR_XML_PARSE_ERROR(20201, "XML解析出错"),
    SYSTEM_ERROR_JSON_PARSE_ERROR(20202, "JSON解析出错,可能是视频不合格,或解析结果格式有误"),
    SYSTEM_ERROR_EXCEL_PARSE_ERROR(20203, "Excel解析出错"),
    SYSTEM_ERROR_ZIP_PARSE_ERROR(20204, "压缩文件解析出错"),
    SYSTEM_ERROR_APPLICATION_ERROR(20205, "获取系统应用程序配置出错"),
    SYSTEM_ERROR_EDIT_MYSQL_CONFIG_ERROR(20206, "修改数据库连接信息出错，请检查数据库连接信息是否正确"),
    SYSTEM_ERROR_BACKUP_DATABASE_ERROR(20207, "备份数据库出错"),
    SYSTEM_ERROR_REPORT_WARNING_TYPE_ERROR(20208, "未知的预警类型"),

    SYSTEM_RESOURCE_ERROR(20300, "系统资源异常"),
    SYSTEM_RESOURCE_ADMIN_ACCOUNT_NOT_EXISTS(20301, "请求的管理员账号不存在"),
    SYSTEM_RESOURCE_COMPANY_NOT_EXISTS(20302, "请求的单位不存在"),
    SYSTEM_RESOURCE_SUP_COMPANY_NOT_EXISTS(20303, "请求的上级单位不存在"),
    SYSTEM_RESOURCE_DEPT_NOT_EXISTS(20304, "请求的部门不存在"),
    SYSTEM_RESOURCE_SUP_DEPT_NOT_EXISTS(20305, "请求的上级部门不存在"),
    SYSTEM_RESOURCE_POSITION_NOT_EXISTS(20306, "请求的职位不存在"),
    SYSTEM_RESOURCE_ERROR_USER_NOT_EXISTS(20307, "请求的用户不存在"),
    SYSTEM_RESOURCE_COMPANY_CONF_NOT_EXISTS(20308, "请求的单位配置不存在"),
    SYSTEM_RESOURCE_ERROR_REPORT_NOT_EXISTS(20309, "请求的报告不存在"),
    SYSTEM_RESOURCE_ERROR_REPORT_NOT_ANALYZED(20310, "请求的报告还未完成分析"),
    SYSTEM_RESOURCE_ERROR_REPORT_SA_ERROR(20310, "视频情感分析结果异常，请确保人脸在视频中并重新检测"),
    SYSTEM_RESOURCE_ERROR_FILE_NOT_EXISTS(20311, "请求的文件不存在"),
    SYSTEM_RESOURCE_ERROR_DATABASE_BACKUP_NOT_EXIST(20312, "请求的数据库备份不存在"),
    SYSTEM_RESOURCE_ERROR_DATA_SOURCE_NOT_EXISTS(20313, "请求的数据源不存在"),
    SYSTEM_RESOURCE_ERROR_DATA_SOURCE_INACTIVE(20314, "数据源已被禁用"),

    SYSTEM_RESOURCE_EXISTS_ERROR(20310, "已存在资源，无法进行此操作"),
    USER_REGISTER_ERROR_ACCOUNT_EXISTS(20311, "用户名已存在"),
    SYSTEM_RESOURCE_ERROR_USER_ID_EXISTS(20312, "用户名已存在"),
    SYSTEM_RESOURCE_EXISTS_COMPANY_NAME_ERROR(20313, "单位名称已存在"),
    SYSTEM_RESOURCE_EXISTS_DEPT_NAME_ERROR(20314, "部门名称已存在"),
    SYSTEM_RESOURCE_EXISTS_POSITION_NAME_ERROR(20315, "职位名称已存在"),
    SYSTEM_RESOURCE_ERROR_NAME_EXISTS(20316, "名称已存在"),
    SYSTEM_RESOURCE_ERROR_REPORT_VIBRA(20317, "Vibra结果已分发，无法进行此操作"),
    SYSTEM_RESOURCE_ERROR_REPORT_SHENSHI(20317, "Shenshi结果已分发，无法进行此操作"),
    SYSTEM_RESOURCE_ERROR_DATABASE_BACKUP_BUSY(20318, "数据库备份中，请稍后再试"),

    SYSTEM_RESOURCE_EXISTS_COMPANY_HAS_USER_ERROR(20321, "该单位或下级单位的人员数据不为空，无法删除"),
    SYSTEM_RESOURCE_EXISTS_COMPANY_HAS_ADMIN_ERROR(20322, "该单位或下级单位的管理员数据不为空，无法删除"),
    SYSTEM_RESOURCE_EXISTS_DEPT_HAS_USER_ERROR(20323, "该部门或下级部门的人员数据不为空，无法删除"),
    SYSTEM_RESOURCE_EXISTS_DEPT_HAS_ADMIN_ERROR(20324, "该部门或下级部门的管理员数据不为空，无法删除"),
    SYSTEM_RESOURCE_EXISTS_POSITION_HAS_USER_ERROR(20325, "该职位的人员数据不为空，无法删除"),

    SYSTEM_RESOURCE_ADMIN_ACCOUNT_NOT_BLOCK_SELF(20331, "不能禁用自己的账号"),
    SYSTEM_RESOURCE_ADMIN_ACCOUNT_NOT_DELETE_SELF(20332, "不能删除自己的账号"),
    SYSTEM_RESOURCE_ADMIN_ACCOUNT_NOT_EDIT_PASSWORD_SELF(20333, "不能在此处修改自己账号的密码，请在个人中心修改"),

    SYSTEM_RESOURCE_IS_COMPANY_CONTACT(20341, "该账号已是单位联系人，不能修改管理员角色"),
    SYSTEM_RESOURCE_IS_DEPT_CONTACT(20342, "该账号已是部门联系人，不能修改管理员角色"),

    SYSTEM_ERROR_PDF_GENERATION_ERROR(20209, "PDF生成出错"),
    SYSTEM_ERROR_PDF_TEMPLATE_NOT_FOUND(20210, "PDF模板文件不存在"),
    SYSTEM_ERROR_PDF_DATA_INVALID(20211, "PDF生成数据无效"),
    SYSTEM_ERROR_PDF_EXPORT_ERROR(20212, "PDF导出出错"),

    TPS_ERROR(30001, "调用第三方服务出错"),

    TPS_DOWNSTREAM_SERVICE_ERROR(30100, "被调用的下游服务出错"),

    TPS_DATABASE_ERROR(30300, "数据库服务出错"),
    TPS_SA_ERROR(30400, "情感分析服务出错"),
    TPS_FILE_UPLOAD_ERROR(30500, "人脸服务出错"),
    TPS_FILE_UPLOAD_FACE_EXIST_ERROR(30501, "人脸服务出错，人脸已存在"),
    TPS_FILE_UPLOAD_NO_FACE_ERROR(30502, "人脸服务出错，找不到对应的人脸信息"),
    TPS_FILE_UPLOAD_PHOTO_ERROR(30503, "人脸服务出错，照片不符合规范"),
    TPS_FILE_UPLOAD_VIDEO_ERROR(30503, "人脸服务出错，照片不符合规范"),
    TPS_FILE_UPLOAD_FACE_NO_CORRECT_ERROR(30504, "人脸服务出错，人脸不匹配"),
    TPS_TENCENT_SMS_ERROR(30700, "腾讯短信发送平台出错"),
    TPS_FEIGN_ERROR(30800, "Feign服务调用出错"),
    TPS_FEIGN_INTERNAL_SERVER_ERROR(30801, "Feign调用内部服务器错误"),
    TPS_FEIGN_SERVICE_UNAVAILABLE(30802, "Feign调用服务不可用"),
    TPS_FEIGN_TIMEOUT_ERROR(30803, "Feign调用超时"),
    TPS_FEIGN_CONNECTION_ERROR(30804, "Feign连接错误")
    ;

    private final int code;
    private final String msg;

    ErrorCode(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

}

